package Task;
import java.util.*;
public class TEST {
    public static void main(String[] args) {


                Scanner scanner = new Scanner(System.in);
                int n = scanner.nextInt();
                scanner.nextLine(); // 消耗换行符
                String s = scanner.nextLine();
                scanner.close();

                System.out.println(reorderString(s));
            }

            private static String reorderString(String s) {
                // 统计每个字符的出现次数
                int[] count = new int[26];
                for (char c : s.toCharArray()) {
                    count[c - 'a']++;
                }

                // 找到出现次数最多的字符
                int maxCount = 0;
                for (int val : count) {
                    if (val > maxCount) {
                        maxCount = val;
                    }
                }

                // 如果最多的字符出现次数大于 (n + 1) / 2，则无法重排
                if (maxCount > (s.length() + 1) / 2) {
                    return "no";
                }

                // 构建结果字符串
                StringBuilder result = new StringBuilder();
                for (int i = 0; i < 26; i++) {
                    while (count[i]-- > 0) {
                        result.append((char) ('a' + i));
                    }
                }

                // 重新排列字符串，确保没有相邻字符相同
                StringBuilder finalResult = new StringBuilder();
                int left = 0, right = result.length() - 1;
                boolean useLeft = true;
                while (left <= right) {
                    if (useLeft) {
                        finalResult.append(result.charAt(left++));
                    } else {
                        finalResult.append(result.charAt(right--));
                    }
                    useLeft = !useLeft;
                }

                return "yes\n" + finalResult.toString();
            }
        }



